Pygame入门 您所在的位置:网站首页 pygame 视频 Pygame入门

Pygame入门

2023-09-14 07:45| 来源: 网络整理| 查看: 265

Pygame Pygame学习笔记1——游戏基础及添加图片1、游戏最小系统1窗口标题2关闭窗口 2、添加内容1添加图片2设置背景颜色 3、资源4、预告 学习资料: https://www.bilibili.com/video/BV1bE411p7Ue?p=1,快来给这个前锋教育UP主点个赞🚀

视频讲的更全,可以在这里看

【零基础 Python体验课】第四季 pygame游戏开发

Pygame学习笔记1——游戏基础及添加图片

内容纯手写,转载请附上链接!

Pygame有很多的模块,不同的模块专注于不同的功能。Pygame是一个Python的第三方游戏制作模块,可以制作一些比较简单的游戏,但是如果真正开发2D、3D游戏,Pygame就不很实用了,Python可以使用PyQt,但是通常开发大型游戏,比如王者荣耀这种功能超多、高渲染的游戏,用的是Unity之类的2D、3D游戏,都需要使用C系列的语言,比如Unity需要学会C#、Qt要C++。

Pygame在制作小游戏娱乐,哄小孩范畴还是可以的

以下是一些Pygame的类,讲不完的,讲完我也该倒地了

模块名功能pygame.cdrom访问光驱(比较古老,现代电脑几乎都没有光驱了)pygame.cursors加载光标(加载光标,更改光标的形状)pygame.display访问显示设备(所有游戏都有界面的)pygame.draw绘制形状、​​线和点(以画的形式展现)pygame.event管理事件(检测事件,让游戏灵活,鼠标键盘控制游戏)pygame.font使用字体(游戏的文字字体)pygame.image加载和存储图片(游戏中最多的元素)pygame.joystick使用游戏手柄🕹或者类似的东西(现在很少使用了)pygame.key读取键盘按键(通过键盘控制比如WASD)pygame.mixer声音(通常有两种:背景音乐和音效效果)pygame.mouse鼠标(鼠标相关功能)pygame.movie播放视频(例如第五人格人物介绍、广告)pygame.music播放音频(例如第五人格监管者追击音乐)pygame.overlay访问高级视频叠加(视频高级操作)pygame.rect管理矩形区域(矩阵-范围相关)pygame.sndarray操作声音数据(音频高级操作)pygame.sprite操作移动图像(比如人物)pygame.surface管理图像和屏幕(看得到的对象)pygame.surfarray管理点阵图像数据(先不管,高级操作)pygame.time管理时间和帧信息(管理时间信息,时间控制)pygame.transform缩放和移动图像(游戏界面图像的变形) 1、游戏最小系统

Pygame有几步操作

首先导入pygame的库初始化操作(初始化游戏,初始化硬件) 初始化为一次性初始化,初始很多东西,比如鼠标键盘,也可以一开始不写初始化,等到需要某个部分时分开初始化 创建游戏窗口(创建界面,没有界面怎么玩) 使用display方法,设置宽高,设置好的界面需要用一个对象保存,类似于root = Tk(),窗口种子 让游戏保持一直运行的状态(类似Tk的消息循环,叫game loop) 如果不加入循环,运行程序会瞬间结束,所以需要一个死循环,结束游戏就跳出 检测事件,比如鼠标、键盘的事件,用for循环遍历 # __author__=="thomas" import pygame #导入库 # 1.初始化操作 pygame.init() #2. 创建游戏窗口 window = pygame.display.set_mode((400, 600)) # 3.让游戏保持一直运行的状态 # 写个死循环吧 game loop (游戏循环) while True: # 4.检测事件 for event in pygame.event.get(): #获取事件 pass

在这里插入图片描述

代码执行结果就是这样

1窗口标题

下面介绍一下,我们将窗体赋给了一个变量——window,而上方的关闭、最小化、全屏、标题等操作是由操作系统控制的,window控制的窗体内部。于是设置标题不用window操控,还是display类的方法叫做set_caption()

# __author__=="thomas" import pygame #导入库 # 1.初始化操作 pygame.init() #2. 创建游戏窗口 window = pygame.display.set_mode((400, 600)) # 设置游戏标题,标题 pygame.display.set_caption("Thomas的游戏") # 3.让游戏保持一直运行的状态 # 写个死循环吧 game loop (游戏循环) while True: # 4.检测事件 for event in pygame.event.get(): #获取事件 pass

在这里插入图片描述

2关闭窗口

这个生成的窗口可以最小化,但是不可以关闭,Mac和Windows都这样,点击无效,原因是没有退出无限循环,可以在控制台内按Ctrl+C强制中断,但是一般用户不会这么用。

那么点击叉子是一个事件

需要在for循环中处理事件,这个事件叫做pygame.QUIT,下面提供两个方法

方法一:关闭当前线程——exit(),由于当前程序只有这一个线程,所以使用exit()退出当前线程

while True: # 4.检测事件 for event in pygame.event.get(): #获取事件 # 检测关闭按钮被点击的事件 if event.type == pygame.QUIT: exit() #结束这一个线程

方法二:将while True改为False,所以可以把True换成一个变量,比如Flag?

flag = True #循环控制 while flag: # 4.检测事件 for event in pygame.event.get(): #获取事件 # 检测关闭按钮被点击的事件 if event.type == pygame.QUIT: #exit() #结束这一个线程 flag = False

成功关闭!💪但是真正开发大型游戏绝不可能结束这么简单,结束之前需要很多事情,可能要很多函数为了结束,比如要保存日志数据,你的进度、等级、闯了多少关。

2、添加内容

第一步还是游戏最小系统,然后添加内容可以写在两个地方,第一个是创建游戏窗口之后和无限循环之前,这个地方写游戏开始页面静态效果,第二个是在循环中写帧的刷新(动画,这里不涉及),当然也可以写在类、函数中。

1添加图片

图片咱们先整静态的,放在静态效果中,首先需要一个图片,我找了一个飞机的图片,在文章的最后面

素材网站(图标图片):https://www.easyicon.net

插入图片步骤:

加载图片(load,打开图片)渲染图片(用window,光打开无法显示) 使用window.blit(),blit(渲染对象,坐标)坐标是以屏幕左上角为(0, 0),有些引擎不一样 刷新显示页面(不刷新无法显示) pygame有一个特点,你放置了部件,但是必须刷新界面可能显示出来,不知道大家写没写过前端,写完HTML必须保存,再刷新浏览器才能显示刷新可以一次更改很多项只刷新一次 操作图片🎛 获取图片大小:img.get_size()旋转和缩放-----形变: pygame.transform.scale(img, (100, 100)),参数:scale(缩放对象,目标大小),但是如果不按照比例缩小会变形pygame.transform.rotozoom(img,),参数:rotozoom(缩放/旋转对象,旋转角度,缩放比例),也会发生形变

实例代码:

# __author__=="thomas" import pygame pygame.init() window = pygame.display.set_mode((600, 600)) pygame.display.set_caption("显示图片") # ============游戏开始页面静态效果========== #1.加载图片 img = pygame.image.load("Img/Plain.png") #如果你要尝试,要么图片放在原位,要么改变路径 #2.渲染图片 #blit(渲染对象,坐标) window.blit(img, (0, 1)) #3.刷新显示页面 #1.第一次刷新用它 pygame.display.flip() #2.不是第一次刷新 pygame.display.update() #刷新 #======================================== flag = True while flag: for event in pygame.event.get(): if event.type == pygame.QUIT: exit()

在这里插入图片描述

注:如果你想使用这个代码,需要改变图片路径

网上下载的图片难免会尺寸不合适,可以在easyicon下载时点击详情找合适尺寸,也可以下载后使用工具

windows画图,点击重新调整尺寸WPS图片,工具超多(VIP更多)

前面介绍的transform也差不多了,然后get_size()有两个返回值,可以使用两个变量接收,实例代码如下,重点在于双等线之间

# __author__=="thomas" import pygame pygame.init() window = pygame.display.set_mode((600, 600)) pygame.display.set_caption("显示图片") # 设置背景颜色 window.fill((255, 255, 255)) # ============游戏开始页面静态效果========== #1.加载图片 img = pygame.image.load("Img/Plain.png") #如果你要尝试,要么图片放在原位,要么改变路径 #2.渲染图片 #blit(渲染对象,坐标) window.blit(img, (0, 1)) w, h = img.get_size() #获取宽高 #print(w, h) 输出测试 window.blit(img, (600-w, 600-h)) #放在右下角 new1 = pygame.transform.scale(img, (100, 200)) #缩放为x=100,y=200,变形了 window.blit(new1, (210, 0)) #靠右一点放置 new2 = pygame.transform.rotozoom(img, 0, 0.5) #不旋转为0,缩放百分比为0.5 window.blit(new2, (0, 200)) #================================== #3.刷新显示页面 #1.第一次刷新用它 pygame.display.flip() #2.不是第一次刷新 pygame.display.update() #刷新 flag = True while flag: for event in pygame.event.get(): if event.type == pygame.QUIT: exit()

在这里插入图片描述

缩放比例为0~1,0.5就是50%

旋转是按照度数向左旋转,45就是

在这里插入图片描述

2设置背景颜色

接下来我们需要设置窗口背景,如果是windows操作系统背景是黑色的,Mac是白色的,Mac看起来白白的浑然一体,其实是透明,一旦往上添加东西,就会变成黑色。

# 设置背景颜色 window.fill((255, 255, 255))

这应该是最小系统里的,更改后代码如下

# __author__=="thomas" import pygame pygame.init() window = pygame.display.set_mode((600, 600)) pygame.display.set_caption("显示图片") # 设置背景颜色 window.fill((255, 255, 255)) # ============游戏开始页面静态效果========== #1.加载图片 img = pygame.image.load("Img/Plain.png") #如果你要尝试,要么图片放在原位,要么改变路径 #2.渲染图片 #blit(渲染对象,坐标) window.blit(img, (0, 1)) #3.刷新显示页面 #1.第一次刷新用它 pygame.display.flip() #2.不是第一次刷新 pygame.display.update() #刷新 flag = True while flag: for event in pygame.event.get(): if event.type == pygame.QUIT: exit()

在这里插入图片描述

pygame的颜色是RGB系统,tkinter是十六进制和颜色名系统

3、资源

附上这个飞机的图片

在这里插入图片描述 记得要保存在Img/Plain.png的位置,这样不需要改代码

4、预告

下一节课将会讲到往窗口中添加文字



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有